Apache Commons IO লাইব্রেরি DirectoryWalker ক্লাস সরবরাহ করে, যা একটি ডিরেক্টরি এবং তার ভিতরের ফাইল এবং সাব-ডিরেক্টরি রিকার্সিভলি ট্রাভার্স (ভ্রমণ) করতে সহায়ক। এটি ডিরেক্টরি ট্রাভার্সাল, ফাইল এবং সাব-ডিরেক্টরি প্রসেসিং ইত্যাদি কাজগুলির জন্য খুবই কার্যকরী।
DirectoryWalker সাধারণত কাস্টম ডিরেক্টরি প্রসেসিং কাজের জন্য ব্যবহৃত হয়, যেখানে আপনাকে ডিরেক্টরি এবং ফাইলগুলো কাস্টম শর্তে ফিল্টার করতে বা প্রক্রিয়া করতে হয়।
DirectoryWalker হল একটি বিমূর্ত (abstract) ক্লাস যা directory traversal এর জন্য ব্যবহৃত হয়। এটি সাধারণত একটি ডিরেক্টরি এবং তার ভিতরের সমস্ত ফাইল ও সাব-ডিরেক্টরি রিকার্সিভভাবে ট্রাভার্স করার জন্য ব্যবহৃত হয়। DirectoryWalker এ দুটি প্রধান মেথড থাকে:
DirectoryWalker কে ব্যবহার করতে, আপনাকে এই ক্লাসটি ইমপ্লিমেন্ট করতে হবে এবং আপনার প্রয়োজনীয় handleFile() এবং handleDirectory() মেথডগুলো কাস্টমাইজ করতে হবে।
DirectoryWalker ব্যবহার করার জন্য আপনাকে একটি কাস্টম ক্লাস তৈরি করতে হবে যা DirectoryWalker ক্লাসটিকে এক্সটেন্ড করবে এবং তার মধ্যে ফাইল এবং ডিরেক্টরি প্রসেসিংয়ের জন্য উপযুক্ত মেথড ইমপ্লিমেন্ট করতে হবে।
DirectoryWalker এর মাধ্যমে একটি ডিরেক্টরি ট্রাভার্স করার জন্য একটি কাস্টম ক্লাস তৈরি করা যেতে পারে, যেখানে আপনি handleFile() এবং handleDirectory() মেথডগুলোকে কাস্টমাইজ করবেন।
উদাহরণ: DirectoryWalker দিয়ে ডিরেক্টরি ট্রাভার্স করা
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.DirectoryWalker;
import java.io.File;
import java.io.IOException;
public class CustomDirectoryWalker extends DirectoryWalker {
// কনস্ট্রাক্টর
public CustomDirectoryWalker(IOFileFilter fileFilter, IOFileFilter directoryFilter) {
super(fileFilter, directoryFilter);
}
// handleFile() মেথডটি ফাইল প্রসেস করতে ব্যবহৃত হয়
@Override
protected void handleFile(File file, int depth, java.util.List<File> results) throws IOException {
System.out.println("File: " + file.getAbsolutePath());
}
// handleDirectory() মেথডটি সাব-ডিরেক্টরি প্রসেস করতে ব্যবহৃত হয়
@Override
protected void handleDirectory(File directory, int depth, java.util.List<File> results) throws IOException {
System.out.println("Directory: " + directory.getAbsolutePath());
}
public static void main(String[] args) throws IOException {
// ডিরেক্টরি এবং ফাইল ফিল্টার
File rootDirectory = new File("path/to/directory");
IOFileFilter fileFilter = TrueFileFilter.TRUE; // সকল ফাইলকে অন্তর্ভুক্ত করবে
IOFileFilter directoryFilter = TrueFileFilter.TRUE; // সকল ডিরেক্টরিকে অন্তর্ভুক্ত করবে
// CustomDirectoryWalker ক্লাসের অবজেক্ট তৈরি
CustomDirectoryWalker walker = new CustomDirectoryWalker(fileFilter, directoryFilter);
// ডিরেক্টরি ট্রাভার্স করা
walker.walk(rootDirectory, null);
}
}
আউটপুট:
Directory: /path/to/directory
File: /path/to/directory/file1.txt
File: /path/to/directory/file2.txt
Directory: /path/to/directory/subdir
File: /path/to/directory/subdir/file3.txt
এখানে:
DirectoryWalker এ FileFilter এবং DirectoryFilter ব্যবহার করে আপনি ফাইল এবং ডিরেক্টরি ফিল্টারিং করতে পারেন, যেমন শুধুমাত্র নির্দিষ্ট ধরনের ফাইল বা ডিরেক্টরি প্রসেস করা।
উদাহরণ: শুধুমাত্র .txt
ফাইল প্রসেস করা
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.apache.commons.io.DirectoryWalker;
import java.io.File;
import java.io.IOException;
public class CustomDirectoryWalker extends DirectoryWalker {
public CustomDirectoryWalker() {
super(FileFilterUtils.suffixFileFilter(".txt"), TrueFileFilter.TRUE);
}
@Override
protected void handleFile(File file, int depth, java.util.List<File> results) throws IOException {
System.out.println("Text File: " + file.getAbsolutePath());
}
@Override
protected void handleDirectory(File directory, int depth, java.util.List<File> results) throws IOException {
System.out.println("Directory: " + directory.getAbsolutePath());
}
public static void main(String[] args) throws IOException {
File rootDirectory = new File("path/to/directory");
CustomDirectoryWalker walker = new CustomDirectoryWalker();
walker.walk(rootDirectory, null);
}
}
আউটপুট:
Directory: /path/to/directory
Text File: /path/to/directory/file1.txt
Text File: /path/to/directory/file2.txt
Directory: /path/to/directory/subdir
Text File: /path/to/directory/subdir/file3.txt
এখানে:
.txt
এক্সটেনশনযুক্ত ফাইলগুলোকেই ট্রাভার্স করার জন্য ফিল্টার করা হয়েছে।.txt
ফাইলগুলির উপর কাজ করবে এবং তাদের পাথ প্রিন্ট করবে।Apache Commons IO এর DirectoryWalker ক্লাস ডিরেক্টরি এবং ফাইলের সাথে কাজ করার সময় আরও আধুনিক এবং কার্যকরী পদ্ধতি সরবরাহ করে, যা কোডকে আরও পরিষ্কার এবং রক্ষণাবেক্ষণের জন্য সহজ করে তোলে।
common.read_more